Hi大家好,
這是我參加 iT 邦幫忙鐵人賽的第 1 次挑戰,這次的主題聚焦在結合 Python 爬蟲、RAG(檢索增強生成)與 AI,打造一套 PTT 文章智慧問答系統。在過程中,我會依照每天進度上傳程式碼到 GitHub ,方便大家參考學習。也歡迎留言或來信討論,我的信箱是 gerryearth@gmail.com。
昨天我們探討了 系統監控與日誌分析,了解如何追蹤系統的健康狀態。
今天,我們要更進一步,討論 如何進行效能壓測(Load Testing),並透過結果找到 系統瓶頸,以便提前優化。
對於一個 RAG 系統來說,最常見的問題是:
效能壓測主要包含以下幾種類型:
Load Testing(負載測試)
模擬多個使用者同時查詢,檢測系統能否應付「日常高峰流量」。
Stress Testing(壓力測試)
持續增加流量,直到系統崩潰,找出極限。
Spike Testing(突發測試)
突然增加大量流量,觀察系統是否能快速恢復。
Endurance Testing(長時間測試)
模擬系統連續運行數小時甚至數天,觀察記憶體洩漏或效能下降。
我們的 PTT RAG 問答系統包含三個核心模組:
Django API
向量檢索(Pinecone / FAISS)
LLM 回答生成(Gemini, GPT, Claude)
瓶頸:API 回應延遲、Token 成本過高
解法:
以下是常用的壓測工具:
Apache JMeter
Locust
k6
from locust import HttpUser, task, between
class RAGUser(HttpUser):
wait_time = between(1, 5) # 模擬使用者每 1~5 秒送一次請求
@task
def ask_question(self):
self.client.post(
"/api/query/",
json={"question": "今天 PTT Gossiping 熱門話題是什麼?"}
)
啟動 Locust 之後,可以設定:
就能觀察:
觀察延遲來源
監控系統資源
定位最慢環節
明天【Day 29】使用者體驗與回饋機制 - 改善用戶體驗,我們來看看如何讓系統更貼近真實使用情境,而不只是技術上的實作。